package com.augurit.gzcgwsp.ljzyz.service;

import java.io.InputStream;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springside.modules.orm.Page;

import com.augurit.common.base.service.ICrudService;
import com.augurit.gzcgwsp.ljzyz.entity.YwYnBusinfo;
import com.augurit.gzcgwsp.ljzyz.web.form.YwYnBusinfoForm;
import com.augurit.gzcgwsp.ywcmn.entity.YwComQyxx;

public interface IYwYnBusinfoService extends ICrudService<YwYnBusinfoForm, Long> {
	/**
	 * 根据案件id查找车辆列表 分页
	 * @param ajid
	 * @return
	 */
	public List<YwYnBusinfo> findPageByAjid(String qyid,String pageNo);
	
	/**
	 * 根据企业id查找车辆列表
	 * @param ajid
	 * @return
	 */
	public List<YwYnBusinfo> findPageByQyid(String qyid);
	
	/**
	 * 根据主键查找车辆信息
	 * @param id
	 * @return
	 */
	public YwYnBusinfo findById(String id);
	
	/**
	 * 导入车辆信息excel
	 * @param ajid 案件ID
	 * @param gsmc 公司名称
	 * @param uploadFile 流
	 * @throws Exception
	 */
	public void uploadBusinfo(long qyid,long ajid, String gsmc, InputStream uploadFile) throws Exception ;
	
	/**
	 * 更新车辆信息
	 * @param busId 车辆ID
	 * @param spsx 审批事项
	 */
	public void updateBusinfo(long busId,String spsx);
	
	/**
	 * 修改对象
	 */
	public void update(YwYnBusinfo entity);
	
	/**
	 * 根据车辆id 年审状态。核发状态查询
	 * @param id
	 * @param hfqksts 核发状态
	 * @param nssysts 年审状态
	 * @return
	 * @throws Exception
	 */
	public YwYnBusinfoForm sp(Long id,String hfqksts,String nssysts) throws Exception;

	/**
	 * 获取所有的公司信息
	 * @return
	 */
	public List<YwComQyxx> getQyxx();

	public Page<YwYnBusinfoForm> getCarNsdj(Page<YwYnBusinfoForm> page, YwYnBusinfoForm form);

	/**
	 * 核发的数据
	 * @param page
	 * @param form
	 * @return
	 */
	public Page<YwYnBusinfoForm> getNshf(Page<YwYnBusinfoForm> page, YwYnBusinfoForm form);

	/**
	 * 获取审批每个环节的待办数据
	 * @param page
	 * @param form
	 * @param hfqksts 核发情况状态
	 * @param nssts 年审环节状态
	 * @return
	 */
	public Page<YwYnBusinfoForm> getspList(Page<YwYnBusinfoForm> page, YwYnBusinfoForm form,
			String hfqksts,String nssts);

	/**
	 * 查询实体
	 * @param busId
	 * @return
	 */
	public YwYnBusinfo getEntity(Long busId);

	/**
	 * 查询车辆以前的审批信息
	 * @param id
	 * @date
	 * @return
	 */
	public List<YwYnBusinfoForm> getSpData(Long id,Date date);

	/**
	 * 保存车辆信息，同时保存车辆的过户信息
	 * @param form
	 */
	public void saveForm(YwYnBusinfoForm form);

	/**
	 * 删除车辆
	 * @param id
	 */
	public void deleteEntity(Long id);

	/**
	 * 显示删除的车辆
	 * @param page
	 * @param form
	 * @return
	 */
	public Page<YwYnBusinfoForm> searchDelBus(Page<YwYnBusinfoForm> page, YwYnBusinfoForm form);

	/**
	 * 车辆查询
	 * @param page
	 * @param form
	 * @return
	 */
	public Page<YwYnBusinfoForm> findBusData(Page<YwYnBusinfoForm> page, YwYnBusinfoForm form,String sfhg);

	/**
	 * 获取载重量
	 * @param form
	 * @return
	 */
	public String findZzl(YwYnBusinfoForm form);
	/**
	 * 根据企业id查准运证有效期 返回格式：开始日期~结束日期
	 * @param busId
	 * @return 
	 */
	public String getZyzyxqByBusId(Long busId);
	
	public Page<YwYnBusinfoForm>  searchSyyxq(Page<YwYnBusinfoForm> page, YwYnBusinfoForm form);

	/**
	 * 统计报表
	 * @param map
	 * @return
	 */
	public List<String[]> stateBusInfo(Map map);
	/**
	 * 根据审批状态显示最大车辆id的公司
	 */
	public Long getBusQyid(String carsts, String nssysts);

	/**
	 * 根据车牌号码获取车辆信息
	 * @param 车牌号码
	 * @return
	 */
	public YwYnBusinfoForm getBusByNo(String cphm);

	/**
	 * 根据车辆编号和车牌号码读取数据
	 * @param cphm
	 * @param clbh
	 * @return
	 */
	public YwYnBusinfoForm getBusByNo(String cphm, String clbh);
	
	/**
	 * 保存的时候把所有的内容保存包括年审 和核发
	 * @param entity
	 * @return
	 */
	public String saveCarInfo(YwYnBusinfoForm entity);
}